package HRMPROJECT.MODELS;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DepartmentModels {
    private Connection m_objConnection = null;
    private CallableStatement m_objST = null;
    private ResultSet m_objRS = null;

    public DepartmentModels(Connection obj_Connection) {
        // Khởi tạo các đối tượng
        m_objConnection = obj_Connection;
    }

    /* Hiển thị toàn bộ thông tin sinh viên từ hệ thống */
    public ResultSet getDepartmentAll() throws SQLException {
        try {
            // 1. Kiểm tra trạng thái kết nốibj
            if (!m_objConnection.isClosed()) {
                m_objST = m_objConnection.prepareCall("{call Y2016JC29P_GET_DEPARTMENT_ALL()}");

                // 2. Thực thi truy vấn
                m_objRS = m_objST.executeQuery();
            }
        } catch (SQLException ex) {
            throw ex;
        }
        return m_objRS;
    }

    /* Nghiệp vụ thêm sinh viên vào danh sách */
    public boolean InsertElement(DepartmentEntity objEntity) throws SQLException {
        try {
            if (!m_objConnection.isClosed()) {
                m_objST = m_objConnection.prepareCall("{call Y2016JC29P_INSERT_DEPARTMENT(?,?,?)}");
                // 2. Thiết lập tham số cho Store Procedure
                m_objST.setString("Names", objEntity.getNames());
                m_objST.setString("Description", objEntity.getDescription());
                m_objST.setFloat("Factor", objEntity.getFactor());

                // 3. Thực thi truy vấn
                m_objST.execute();
            }
        } catch (SQLException e) {
            throw e;
        }
        return true;
    }

    // Nghiệp vụ cập nhật thông tinh sinh viên
    public boolean UpdateElement(DepartmentEntity objEntity) throws SQLException {
        try {
            if (!m_objConnection.isClosed()) {
                m_objST = m_objConnection.prepareCall("{call Y2016JC29P_UPDATE_DEPARTMENT(?,?,?,?)}");

                m_objST.setInt("DepartId", objEntity.getDepartId());
                m_objST.setString("Names", objEntity.getNames());
                m_objST.setString("Description", objEntity.getDescription());
                m_objST.setFloat("Factor", objEntity.getFactor());

                // 3. Thực thi truy vấn
                m_objST.execute();
            }
        } catch (SQLException ex) {
            throw ex;
        }
        return true;
    }

    // Nghiệp vụ xóa thông tin sinh viên
    public boolean DeleteElement(DepartmentEntity objEntity) throws SQLException {
        try {
            if (!m_objConnection.isClosed()) {
                m_objST = m_objConnection.prepareCall("{call Y2016JC29P_DELETE_DEPARTMENT(?)}");

                m_objST.setInt("DepartId", objEntity.getDepartId());
                m_objST.execute();
            }
        } catch (SQLException e) {
            throw e;
        }
        return true;
    }
}
